package com.cnap.service;

import com.cnap.model.file.FileInitReq;
import com.cnap.model.file.MergeReq;
import com.cnap.model.file.PatchRes;
import com.cnap.model.file.UploadPatchReq;
import org.springframework.web.multipart.MultipartFile;

/**
 * 文件服务类
 *
 * @author xc
 **/
public interface FileService {

    /**
     * 初始化文件信息
     *
     * @param fileInitReq 请求
     * @return 文件id
     */
    String initFileInfo(FileInitReq fileInitReq);

    /**
     * 初始化文件信息(指定id)
     *
     * @param fileInitReq 请求
     * @param fileId      文件id
     * @return 文件id
     */
    String initFileInfo(FileInitReq fileInitReq, String fileId);

    /**
     * 上传分片信息
     *
     * @param uploadPatchReq 请求
     * @param multipartFile  分片文件
     * @return 分片响应
     */
    PatchRes uploadPatch(UploadPatchReq uploadPatchReq, MultipartFile multipartFile);

    /**
     * 合并分片文件
     *
     * @param mergeReq 合并请求
     */
    void mergePatchFile(MergeReq mergeReq);

    /**
     * 根据id删除文件信息和分片信息
     *
     * @param parentId 父文件id
     * @return 结果
     */
    boolean deleteFileInfoAndPatchInfoById(String parentId);

    /**
     * 获取保存分片文件的地址
     *
     * @param applicationId 应用id（父文件id）
     * @return 地址
     */
    String getSavePath(String applicationId);

}
